---
title: UserAccessLevels
summary: API reference for UserAccessLevels.
status: draft
owner: SAIF Corporation
last_reviewed: 2026-08-21
library: SAIF.Business.View.Policy
reference_type: embedded
---

# UserAccessLevels

`UserAccessLevels` encodes the authorization tiers that `clsPolicySecurity` uses to decide whether a caller may view a policy and which demo tiers require masked data. The ordinal spacing is deliberate: the real-user tiers drive the access matrix in [BR-VP-005](../../business-rules.md#br-vp-005-access-granted-per-user-access-level-matrix), and each demo tier sits 50 points below its non-demo counterpart so demo-user handling can be recognized with a simple level comparison in the masking flow described by [BR-VP-010](../../business-rules.md#br-vp-010-demo-users-see-masked-data).

## Purpose
- Provide a normalized access-tier vocabulary for `clsPolicySecurity.ConvertUserTypeToUserAccessLevel` and `IsPolicyValidForUser`.
- Separate real and demo user categories while keeping their relative ordering aligned for shared authorization and masking logic.
- Give policy-security code a stable numeric ordering for matrix-style checks across employees, auditors, consultants, agents, groups, policyholders, and quick-file users.

## Context
- Namespace: `SAIF.Business.View.Policy`
- Assembly/package: `SAIF.Business.View.Policy` (embedded)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| SAIFEmployee | `SAIFEmployee = 1000` | Highest-trust internal SAIF employee tier; policy access is allowed directly under the matrix in [BR-VP-005](../../business-rules.md#br-vp-005-access-granted-per-user-access-level-matrix). |
| Auditor | `Auditor = 900` | External or audit-role tier evaluated through the auditor-specific 60-day access window in [BR-VP-006](../../business-rules.md#br-vp-006-auditor-60-day-access-window). |
| DemoAuditor | `DemoAuditor = 850` | Demo equivalent of the auditor tier; participates in auditor rules while receiving masked data under [BR-VP-010](../../business-rules.md#br-vp-010-demo-users-see-masked-data). |
| Losscontrol | `Losscontrol = 800` | Loss-control consultant tier evaluated by consultant-prefix matching under [BR-VP-007](../../business-rules.md#br-vp-007-loss-control-prefix-match). |
| DemoLossControl | `DemoLossControl = 750` | Demo loss-control tier that follows consultant matching, including the demo-specific identity rule in [BR-VP-008](../../business-rules.md#br-vp-008-demo-loss-control-matched-on-useridname). |
| Agent | `Agent = 700` | Agent tier validated against the agent's accessible policy list under the [BR-VP-005](../../business-rules.md#br-vp-005-access-granted-per-user-access-level-matrix) policy-security matrix. |
| DemoAgent | `DemoAgent = 650` | Demo equivalent of the agent tier; authorization follows agent rules while returned data is masked per [BR-VP-010](../../business-rules.md#br-vp-010-demo-users-see-masked-data). |
| Group | `Group = 600` | Group-user tier checked through group-policy membership lookup in the policy-security matrix. |
| DemoGroup | `DemoGroup = 550` | Demo equivalent of the group tier, preserving group-based authorization while enabling masked output. |
| Policyholder | `Policyholder = 500` | Policyholder tier validated against the policyholder's accessible policies in the authorization matrix. |
| DemoPolicyholder | `DemoPolicyholder = 450` | Demo equivalent of the policyholder tier; retains policyholder-style authorization with masked returned data. |
| QuickFileUser | `QuickFileUser = 300` | Lowest explicitly enumerated tier, used for quick-file access decisions in the same authorization matrix. |

## Behavioral notes
- `clsPolicySecurity` converts user types into these ordinals before evaluating policy access under [BR-VP-005](../../business-rules.md#br-vp-005-access-granted-per-user-access-level-matrix).
- The pattern of placing each demo tier 50 points below the corresponding real tier enables shared comparisons for demo detection and masking behavior in [BR-VP-010](../../business-rules.md#br-vp-010-demo-users-see-masked-data).* 
- These values are part of the library's security vocabulary; changing them would alter both authorization ordering and demo-tier recognition.

## Constraints and usage notes
- Keep the documented ordinal values stable when maintaining compatibility with existing `clsPolicySecurity` checks.
- Prefer comparing against the enum values rather than hard-coded numbers in consuming code.

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Business.View.Policy/clsPolicyData.vb`
